package Year22_Month05.day18;

import java.util.Stack;

public class 逆波兰表达式 {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < tokens.length; i++) {
            String s = tokens[i];
            if(isNumber(s)){
                //如果不是运算符，就直接入栈就行
                stack.push(Integer.valueOf(s));
            }else{
                //如果是运算符，出栈两个元素，进行运算
                int a = stack.pop();
                int b = stack.pop();
                //这里注意,b在前，a在后
                if(s.equals("+")) stack.push(a + b);
                if(s.equals("-")) stack.push(b - a);
                if(s.equals("*")) stack.push(a * b);
                if(s.equals("/")) stack.push(b / a);
            }
        }
        return stack.pop();
    }
    //判断一下当前字符是不是一个数字
    public boolean isNumber(String s){
        return !((s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")));
    }
}
